<?php

/**
 * Description of Test
 *
 * @author Dingo
 */
class Modul_Admin_Aktualnosci_Tagi_Edycja extends Modul_Admin_Abstract {

    protected $nazwaModulu = 'Admin_Aktualnosci_Lista';

    public function inicjalizuj() {
        $this->strona = array('tytul' => 'Edycja Tagu');
        $this->szablon = array('tpl1' => '../Admin/Aktualnosci/Tagi/Edycja.tpl');

        if (isset($this->param['akcja']) &&
                $this->param['akcja'] == 'edytuj') {
            $this->edytuj();
        } else if (isset($this->param['akcja']) &&
                $this->param['akcja'] == 'usunNiePowiazane') {
            $this->usunNiePowiazane();
        } else if (isset($this->param['akcja']) &&
                $this->param['akcja'] == 'usun') {
            $this->usun();
        }
    }

    private function edytuj() {
        $id = isset($this->param['id']) ? $this->param['id'] : $_POST['id'];
        if (!is_numeric($id)) {
            die();
        }
        $tag = Tagi::FindById('Tagi', $id);
        /* Wygenerowanie formularza */
        $this->daneTPL['form'] = Form_Tagi::generuj($tag, '/cms/aktualnosci/tagi/edycja/akcja,edytuj.html');
        /* Sprawdzenie czy wysłano dane i czy dane są zwalidowanie poprawnie */
        if (isset($_POST['id'])) {
            $bledy = $this->walidujTagi();
            if (Form_Valid::isValid($bledy)) {
                unset($_POST['id']); //usuniecie id, aby nie dodawało id = empty dla nowego rekordu!
                $tag->populate($_POST);
                $tag->save();
                $this->zakoncz('/cms/aktualnosci/tagi/');
            } else {
                $this->daneTPL['bledy'] = $bledy;
            }
        }
    }

    private function usunNiePowiazane() {
        $wyniki = Tagi::FindAll('Tagi');
        foreach ($wyniki as $wynik) {
            if ($wynik->findLinkedCount('Aktualnosci') == 0) {
                $wynik->destroy();
            }
        }
        die();
    }

    private function walidujTagi() {
        /* Walidacja */
        if (Form_Valid::isEmpty(Form_Valid::getFormValue('tag'))) {
            $bledy[] = "Tag nie może być pusty";
        } else if (Form_Valid::isTooLong(Form_Valid::getFormValue("tytul"), 254)) {
            $bledy[] = "Tag musi mieć więcej niż 2 znaki";
        }
        return $bledy;
    }

    private function usun() {
        if (!isset($this->param['id']) || !is_numeric($this->param['id'])) {
            die();
        }
        $tag = Sql::FindById('Tagi', $this->param['id']);
        $aktualnosci = $tag->find_linked('Aktualnosci');
        if ($aktualnosci) {
            foreach ($aktualnosci as $aktualnosc) {
                $tag->detach($aktualnosc);
            }
        }
        $tag->destroy();
        die();
    }

}

?>
